/**
 * 问题描述：
 *  输入一个自然数，若为偶数则除以2
 * @param {*} number 
 * @param {*} times 
 */
function cul(number, times = 0) {
    if (number === 1) {
        return
    }
    if (number%2 === 0) {
        number /= 2
    } else {
        number = number * 3 + 1
    }
    times++
    cul(number, times)
    console.log(times)
}

// cul(4, 0)


/**
 * 给一个正整数N，正整数集合S
 * 求集合中的两个元素相加等于N的组合
 * @param {*} N 
 * @param {*} array 
 * @param {*} result 
 */
function compose(N, S, R = []) {
    if (S.length <= 1) {
        return
    }
    let x = S.shift()
    for(let y of S) {
        if (y + x === N) {
            R.push({x, y})
        }
    }
    compose(N, S, R)
}

const result = []
compose(10, [1, 8, 5, 2, 3, 9, 5, 7], result)
console.log(result)